/**
 * @see 该页面是缴费通用界面，此界面从不同的业务进入，需要带入参数进入。进入时根据业务类型来做不同的处理。
 * @see 接受参数主要有：
 * @param {*orderDetails 订单详情} Object
 * @param {*type 业务类型（电子证明文件、电子成绩单、...）} String
 * @example /pages/workService/components/sendEmail/index?orderDetails=*********&type=电子证明
 */
import { formatMoneyArr } from '../../../../utils/util' // 格式化金额

Page({
  data: {
    orderDetails: {},
    type: '',
    payWay: 'wx', // 支付方式 wx umi
    buttonList: [
      { text: '确认扣除' },
      { text: '取 消' }
    ]
  },
  onLoad (option) {
    this.initData(option)
  },
  /**
   * @see 初始化数据
   */
  initData (option) {
    try {
      const orderDetails = JSON.parse(option.orderDetails)
      const type = option.type
      orderDetails.wxCountPriceArr = formatMoneyArr(orderDetails.wxCountPrice)
      orderDetails.data.forEach((item) => {
        item.wxPriceArr = formatMoneyArr(item.price)
      })
      this.setData({
        orderDetails,
        type
      })
    } catch (err) {
      console.log(err)
      wx.showToast({
        title: '解析数据错误',
        icon: 'none'
      })
    }
  },
  /**
   * @see 档案馆缴费
   */
  archivesWecharPay () {
    const { orderDetails } = this.data
    if (!orderDetails.archivesId) {
      wx.showToast({
        title: '订单异常',
        icon: 'none'
      })
      setTimeout(() => {
        wx.navigateBack({ delta: 1 })
      }, 800)
      return
    }
    const request = {
      vcid: orderDetails.data[0].vcid, // 类型id
      fileName: orderDetails.data[0].vcName, // 类型名称
      moduleType: 3,
      productNum: orderDetails.productCountNum, // 商品数量
      foreignId: orderDetails.archivesId // 申请资料id
    }
    wx.showLoading({
      title: '订单正在生成...',
      mask: true
    })
    wx.$API['workService/getWecharPay'](request).then((result) => {
      const { timeStamp, nonceStr, package: packageQuery, signType, paySign } = result.data[0]
      wx.hideLoading()
      wx.requestPayment({
        timeStamp, // 时间戳
        nonceStr, // 随机字符串
        package: packageQuery, // 统一下单接口返回的 prepay_id 参数值
        signType, // 签名算法
        paySign, // 签名
        // 微信支付成功函数
        success: (res) => {
          console.log(res)
          const data = JSON.stringify({
            type: 'success',
            title: '支付成功',
            info: '支付成功，审核状态可在“申请记录”中的查看(正常在7个工作日内审核完成)',
            btnConfirm: true,
            btnOthers: [{
              text: '申请记录',
              url: '/pages/workService/deptArchives/index?index=1'
            }]
          })
          wx.redirectTo({
            url: '/pages/workService/components/status/index?data=' + encodeURIComponent(data)
          })
        },
        // 微信支付失败函数
        fail: (res) => {
          console.log(res)
          wx.showToast({
            title: '订单已取消',
            icon: 'none'
          })
        }
      })
    }).catch((err) => {
      wx.hideLoading()
      wx.showToast({
        title: '订单生成失败',
        icon: 'none'
      })
    })
  },
  onButton (event) {
    const { index } = event.detail
    switch (index) {
      case 0:
        this.archivesWecharPay()
        break
      case 1:
        wx.navigateBack({ delta: 1 })
        break
    }
  },
  // 暂时用不到，umi支付才用到
  payErr (errcode) {
    wx.hideLoading()
    if (errcode === '-101') {
      const data = JSON.stringify({
        type: 'warn', // success warn
        title: '缴费失败',
        info: '您还没有领取U米',
        btnConfirm: true,
        btnOthers: [
          { text: '去领取U米', url: '/pages/person/point/index' }
        ]
      })
      wx.redirectTo({
        url: '/pages/workService/components/status/index?data=' + encodeURIComponent(data)
      })
    } else if (errcode === '-102') {
      const data = JSON.stringify({
        type: 'warn', // success warn
        title: '缴费失败',
        info: 'U米余额不足',
        btnConfirm: true,
        btnOthers: []
      })
      wx.redirectTo({
        url: '/pages/workService/components/status/index?data=' + encodeURIComponent(data)
      })
    } else {
      wx.showToast({
        title: errmsg,
        icon: 'none',
        duration: 2000
      })
    }
  }
})